package ai.people.platform.system.service;

import ai.people.netmon.framework.domain.system.entity.NmSystemRole;
import ai.people.netmon.framework.domain.system.request.AddSystemRoleRequest;
import ai.people.netmon.framework.domain.system.request.SysRoleRequest;
import ai.people.netmon.framework.domain.system.request.UpdateSystemRoleRequest;
import ai.people.netmon.framework.model.response.PageResponse;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 系统角色服务
 *
 * @author yuanqinglong
 * @date 2022/3/7 11:07
 */
public interface SystemRoleService extends IService<NmSystemRole> {

    /**
     * 角色列表
     *
     * @param request 请求
     * @return {@link PageResponse}<{@link NmSystemRole}>
     */
    PageResponse<NmSystemRole> listRoles(SysRoleRequest request);

    /**
     * 通过id获取角色
     *
     * @param id id
     * @return {@link NmSystemRole}
     */
    NmSystemRole getRolesById(Long id);


    /**
     * 用户角色
     *
     * @param userId 用户id
     * @return {@link List}<{@link NmSystemRole}>
     */
    List<NmSystemRole> userRoles(Long userId);

    /**
     * 保存角色
     *
     * @param systemRoleRequest 角色
     */
    void saveRoles(AddSystemRoleRequest systemRoleRequest);

    /**
     * 更新角色
     *
     * @param updateSystemRoleRequest 角色
     */
    void updateRoles(UpdateSystemRoleRequest updateSystemRoleRequest);

    /**
     * 更新启用
     *
     * @param roleId  角色id
     * @param enabled 启用
     */
    void updateEnabled(Long roleId, Boolean enabled);

    /**
     * 删除角色
     *
     * @param roleId id
     */
    void deleteRoles(Long roleId);


    /**
     * 检查角色存在
     *
     * @param roleId 角色id
     */
    void checkRoleExists(Long roleId);
}
